#pragma once
#include "detect_structure.h"

// 信号处理工具类
class SignalProcessor
{
public:
    // 计算信号功率 (dB)
    static float computePowerDB(const Complex &sample);

    // 计算信号功率 (线性)
    static float computePowerLinear(const Complex &sample);

    // 计算幅度
    static float computeMagnitude(const Complex &sample);

    // 计算相位
    static float computePhase(const Complex &sample);

    // 汉宁窗
    static std::vector<float> hanningWindow(int size);

    // 应用窗函数
    static void applyWindow(std::vector<Complex> &data, const std::vector<float> &window);
    // 快速傅里叶变换 (使用FFTW库)
    static void fft(std::vector<Complex> &data);

    // 快速傅里叶逆变换
    static void ifft(std::vector<Complex> &data);

    // 二维FFT
    static void fft2d(MatrixXcf &data);
};